From c68134baf675390e84f73af266bcf400b9d0e14d Mon Sep 17 00:00:00 2001 From: Sam Steingold Date: Wed, 21 Mar 2012 12:01:18 -0400 Subject: [PATCH] * lisp/window.el (switch-to-prev-buffer): Do not switch to a visible window previous buffer, just like with the frame previous buffers. --- lisp/ChangeLog | 5 +++++ lisp/window.el | 11 +++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index db6b919d30d..510f08fd20f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-03-21 Sam Steingold + + * window.el (switch-to-prev-buffer): Do not switch to a visible + window previous buffer, just like with the frame previous buffers. + 2012-03-21 Chong Yidong * faces.el (make-face, make-empty-face, copy-face): diff --git a/lisp/window.el b/lisp/window.el index f79041e0e6c..894d113cdc7 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -2600,11 +2600,14 @@ shall not be switched to in future invocations of this command." (not (setq killed-buffers (cons new-buffer killed-buffers)))) (not (eq new-buffer old-buffer)) - (or bury-or-kill + (or bury-or-kill (not (memq new-buffer next-buffers)))) - (set-window-buffer-start-and-point - window new-buffer (nth 1 entry) (nth 2 entry)) - (throw 'found t))) + (if (get-buffer-window new-buffer) + ;; Try to avoid showing a buffer visible in some other window. + (setq visible new-buffer) + (set-window-buffer-start-and-point + window new-buffer (nth 1 entry) (nth 2 entry)) + (throw 'found t)))) ;; Scan reverted buffer list of WINDOW's frame next, skipping ;; entries of next buffers. Note that when we bury or kill a ;; buffer we don't reverse the global buffer list to avoid showing -- 2.30.2